CREATE TABLE [dbo].[TDDISP_CCOS]
(
[CO_EMPR] [dbo].[TD_VC_002] NOT NULL,
[CO_PROV] [dbo].[TD_VC_020] NOT NULL,
[CO_TIPO_DOCU] [dbo].[TD_VC_003] NOT NULL,
[NU_DOCU_PROV] [dbo].[TD_VC_020] NOT NULL,
[NU_CORR] [dbo].[TD_IN_001] NOT NULL CONSTRAINT [DF__TDDISP_CC__NU_CO__2A01329B] DEFAULT ((0)),
[TI_AUXI_EMPR] [dbo].[TD_VC_001] NULL,
[CO_CENT_COST] [dbo].[TD_VC_020] NULL,
[CO_CNTA_EMPR] [dbo].[TD_VC_020] NULL,
[CO_ORDE_SERV] [dbo].[TD_VC_020] NULL,
[ST_DIST] [dbo].[TD_VC_001] NOT NULL,
[PO_DIST] [dbo].[TD_NU_009_004] NOT NULL CONSTRAINT [DF__TDDISP_CC__PO_DI__2AF556D4] DEFAULT ((0)),
[IM_DIST] [dbo].[TD_NU_016_004] NOT NULL CONSTRAINT [DF__TDDISP_CC__IM_DI__2BE97B0D] DEFAULT ((0)),
[DE_OBSE] [dbo].[TD_VC_100] NULL,
[TI_DOCU] [dbo].[TD_VC_003] NULL,
[NU_DOCU] [dbo].[TD_VC_020] NULL,
[FE_VENC] [dbo].[TD_DT_001] NULL,
[CO_USUA_CREA] [dbo].[TD_VC_008_USUA] NOT NULL CONSTRAINT [DF__TDDISP_CC__CO_US__2CDD9F46] DEFAULT (suser_sname()),
[FE_USUA_CREA] [dbo].[TD_DT_001_SIST] NOT NULL CONSTRAINT [DF__TDDISP_CC__FE_US__2DD1C37F] DEFAULT (getdate()),
[CO_USUA_MODI] [dbo].[TD_VC_008_USUA] NOT NULL CONSTRAINT [DF__TDDISP_CC__CO_US__2EC5E7B8] DEFAULT (suser_sname()),
[FE_USUA_MODI] [dbo].[TD_DT_001_SIST] NOT NULL CONSTRAINT [DF__TDDISP_CC__FE_US__2FBA0BF1] DEFAULT (getdate())
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE TRIGGER [dbo].[TI_TDDISP_CCOS_I01] ON [dbo].[TDDISP_CCOS] FOR INSERT
/*---------------------------------------------------------*/
/*---- Empresa              : OFISIS S.A.              ----*/
/*---- Cliente              : OFISIS S.A.              ----*/
/*---- Sistema              : OFITESO                  ----*/
/*---- M½dulo               : Empresa                  ----*/
/*---- Programa             : Trigger                  ----*/
/*---- Script               : TRIGGERS_TDDISP_CCOS.SQL ----*/
/*---- Nombre TR            : TI_TDDISP_CCOS_I01       ----*/
/*---- Desarrollado por     : Reynaldo Menacho L.      ----*/
/*---- Fecha Creaci½n       : 02/05/2005               ----*/
/*---- Base de Datos        : SQL_Server               ----*/
/*---- Versi½n              : 2005                     ----*/
/*---- Invoca a SP          :                          ----*/
/*---------------------------------------------------------*/
/*---- Modificado 1 por     : Carlos Mÿrquez Escobar   ----*/
/*---- Fecha Modificaci½n   : 04/10/2005               ----*/
/*---- Detalle Modificacicn : can Docs con estatus de Cliente----*/
/*---------------------------------------------------------*/
/*---- Modificado 2 por     : Carlos Mÿrquez Escobar   ----*/
/*---- Fecha Modificaci½n   : 02/12/2005               ----*/
/*---- Detalle Modificacicn : Manejo de Extornos 		----*/
/*---------------------------------------------------------*/
/*---------------------------------------------------------*/
/*---- Modificado 2 por     : PDGV  ----*/
/*---- Fecha Modificaci½n   : 23/09/2008               ----*/
/*---- Detalle Modificacicn : cuando llama al store SP_TDMOVI_CAJA_I01 
se envia ultimo parametro input fa_camb_extr que lee de la provision del LEA 
	----*/
/*---------------------------------------------------------*/
/*---- Comentarios: Genera cancelaci½n por caja cuando ----*/
/*----              el documento es compromiso de pago ----*/
/*---------------------------------------------------------*/
/*---- Drop TRIGGER tI_TDDISP_CCOS_I01                 ----*/
/*---- Grant All On tI_TDDISP_CCOS_I01 to PUBLIC       ----*/
/*---------------------------------------------------------*/
NOT FOR REPLICATION  
As
Begin
  Declare
  @CSCO_EMPR       TD_VC_002,
  @CSCO_PROV 	   TD_VC_020,
  @CSCO_TIPO_DOCU  TD_VC_003,
  @CSNU_DOCU_PROV  TD_VC_020,
  @CSTI_DOCU  	   TD_VC_003,
  @CSNU_DOCU	   TD_VC_020,
  @VDFE_REGI_COMP  TD_DT_001,
  @CDFE_EMIS	 TD_DT_001,
  @CDFE_VENC	 TD_DT_001,
  @CDFE_PROG_PAGO TD_DT_001,
  @CSCO_MONE  TD_VC_003,
  @CNIM_TOTA  TD_NU_016_004,
  @CNIM_SALD  TD_NU_016_004,
  @CSNU_REND_GAST  TD_VC_010,
  @CSCO_USUA_MODI  TD_VC_008,
  @CSCO_UNID_CONC  TD_VC_003,
  @CSCO_TIPO_OPER  TD_VC_003,
  @CSDE_OBSE	  TD_VC_100,
  @VSCO_CAJA	TD_VC_008,
  @VSAA_CAJA	TD_VC_004,
  @VSMM_CAJA	TD_VC_004,
  @VSNU_COMP_CAJA	TD_VC_008,
  @VSDE_ENTI	TD_VC_100,
  @VNUL_CORR_EGRE TD_IN_001,
  @VNUL_CORR_INEG TD_IN_001,
  @VSTI_CORR_INEG TD_VC_001,
  @VNFA_TIPO_CAMB TD_NU_015_006,
  @VSTI_MOVI	TD_VC_001,
  @VNIM_TOTA  TD_NU_016_004,
  @INIM_DETA_NEGA  TD_NU_016_004,      
  @OSTI_DOCU_LETR TD_VC_003,
  @CNFA_CAMB_EXTR  TD_NU_015_006 


  Exec SP_TTDOCU_CNTB_Q02 6, @OSTI_DOCU_LETR OUTPUT

  Declare CT_TDDISP_CCOS_I01 Cursor
  For
  Select T1.CO_EMPR, T1.CO_CENT_COST, T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV, T1.TI_DOCU, T1.NU_DOCU, T3.CO_MONE, 
	T1.IM_DIST, T4.CO_TIPO_OPEG, T1.DE_OBSE, T1.CO_USUA_MODI, T3.CO_UNID_CONC, T3.FE_EMIS, T3.FE_VENC,t3.FA_CAMB_EXTR
  From Inserted T1, TTTIPO_COPA T2, TMDOCU_PROV T3, TMPARA_TESO T4
  Where T1.CO_EMPR = T2.CO_EMPR
  And T1.TI_DOCU = T2.TI_COMP_PAGO
  And T1.CO_EMPR = T3.CO_EMPR
  And T1.TI_AUXI_EMPR = T4.CO_TIAU_PROV
  And T1.TI_DOCU = T3.CO_TIPO_DOCU
  And T1.NU_DOCU = T3.NU_DOCU_PROV
  And T1.CO_EMPR = T4.CO_EMPR
  
  Open  CT_TDDISP_CCOS_I01
  Fetch CT_TDDISP_CCOS_I01 Into
		@CSCO_EMPR, @CSCO_PROV, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, @CSTI_DOCU, @CSNU_DOCU, @CSCO_MONE, 
		@CNIM_TOTA, @CSCO_TIPO_OPER, @CSDE_OBSE, @CSCO_USUA_MODI, @CSCO_UNID_CONC, @CDFE_EMIS, @CDFE_VENC, @CNFA_CAMB_EXTR
  While @@Fetch_Status = 0
  Begin
		If @@Fetch_Status < 0
		Begin
			Close CT_TDDISP_CCOS_I01
			Deallocate CT_TDDISP_CCOS_I01
		End

		SELECT @VSCO_CAJA = CO_CAJA, @VSTI_CORR_INEG = TI_CORR_INEG        
		FROM TMCAJA        
		WHERE CO_EMPR = @CSCO_EMPR        
		AND CO_MONE = @CSCO_MONE        
		AND ST_COPA = 'S'        

		Select	@INIM_DETA_NEGA = Case ST_SIGN
						When 'S' Then @CNIM_TOTA
						When 'N' Then @CNIM_TOTA * -1.00
					  End,
			@VSTI_MOVI = Case ST_SIGN
						When 'S' Then 'E'
						When 'N' Then 'I'
					  End
		From 	TTDOCU_CNTB
		Where	TI_DOCU = @CSTI_DOCU

		    
		SELECT @VSAA_CAJA = CONVERT(VARCHAR(4), YEAR(FE_REGI_COMP)),        
		    @VSMM_CAJA = REPLICATE('0', 2 - LEN(CONVERT(VARCHAR(2), MONTH(FE_REGI_COMP)))) + CONVERT(VARCHAR(2), MONTH(FE_REGI_COMP)),
			@VNFA_TIPO_CAMB = TMDOCU_PROV.FA_TIPO_CAMB, @VDFE_REGI_COMP = FE_REGI_COMP,
			@VNIM_TOTA =  TMDOCU_PROV.IM_TOTA
		From    	TMDOCU_PROV, TCCOMP_PAGO t0, TDCOMP_PAGO T1
		Where 	TMDOCU_PROV.CO_EMPR  = @CSCO_EMPR
			And TMDOCU_PROV.CO_TIPO_DOCU   = @CSTI_DOCU
			And TMDOCU_PROV.NU_DOCU_PROV = @CSNU_DOCU
	
			And T0.CO_EMPR   = T1.CO_EMPR
			And T0.TI_COMP_PAGO   = T1.TI_COMP_PAGO
			And T0.NU_COMP_PAGO   = T1.NU_COMP_PAGO
			And TMDOCU_PROV.CO_EMPR = T0.CO_EMPR
			And TMDOCU_PROV.CO_PROV = T0.CO_PROV
			And TMDOCU_PROV.CO_TIPO_DOCU = T0.TI_COMP_PAGO
			And TMDOCU_PROV.NU_DOCU_PROV = T1.NU_COMP_PAGO+'-'+Replicate('0',3-Len(Convert(VarChar,T1.NU_CUOT_DETA)))+Convert(VarChar,T1.NU_CUOT_DETA)
			And ( ( IsNull(T0.ST_ALQU, 'N') =  'N'  And  t0.CO_PROV = @CSCO_PROV ) Or
				  ( IsNull(T0.ST_ALQU, 'N') =  'S'  And  t0.CO_CLIE = @CSCO_PROV ) 	
							)

		IF Len(Ltrim(RTrim(IsNull(@VSAA_CAJA, '')))) = 0 And Len(Ltrim(RTrim(IsNull(@VSMM_CAJA, ''))))= 0 And IsNull(@VNFA_TIPO_CAMB,0) = 0

			SELECT	@VSAA_CAJA = CONVERT(VARCHAR(4), YEAR(FE_REGI_COMP)),        
				@VSMM_CAJA = REPLICATE('0', 2 - LEN(CONVERT(VARCHAR(2), MONTH(FE_REGI_COMP)))) + CONVERT(VARCHAR(2), MONTH(FE_REGI_COMP)),
				@VNFA_TIPO_CAMB = TMDOCU_PROV.FA_TIPO_CAMB, @VDFE_REGI_COMP = FE_REGI_COMP,
				@VNIM_TOTA =  TMDOCU_PROV.IM_TOTA
			From    TMDOCU_PROV
			Where 	TMDOCU_PROV.CO_EMPR  = @CSCO_EMPR
				And TMDOCU_PROV.CO_PROV = @CSCO_PROV
				And TMDOCU_PROV.CO_TIPO_DOCU   = @CSTI_DOCU
				And TMDOCU_PROV.NU_DOCU_PROV = @CSNU_DOCU

		     
		SELECT @VSNU_COMP_CAJA = ''        
		    
		SELECT @VSDE_ENTI = NO_AUXI        
		FROM TMAUXI_EMPR        
		WHERE CO_EMPR = @CSCO_EMPR        
		AND TI_AUXI_EMPR = 'P'        
		AND CO_AUXI_EMPR = @CSCO_PROV        

        if Not exists (Select CO_EMPR FROM TMSACA_MENS 
					   WHERE TMSACA_MENS.CO_EMPR = @CSCO_EMPR
					   AND   TMSACA_MENS.CO_CAJA = @VSCO_CAJA
				       AND   TMSACA_MENS.AA_CAJA = @VSAA_CAJA
					   AND   TMSACA_MENS.MM_CAJA = @VSMM_CAJA )		    
		  INSERT INTO TMSACA_MENS  (CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, UL_CORR_INGR, UL_CORR_EGRE, UL_CORR_INEG, IM_SALD_INIC,
								    IM_INGR, IM_EGRE, TI_SITU)
          VALUES (@CSCO_EMPR, @VSCO_CAJA, @VSAA_CAJA, @VSMM_CAJA,  0,0,0,0,0,0, 'ACT')
        ELSE
		  SELECT @VNUL_CORR_EGRE = UL_CORR_EGRE, @VNUL_CORR_INEG = UL_CORR_INEG        
		  FROM TMSACA_MENS        
	      WHERE CO_EMPR = @CSCO_EMPR        
		  AND CO_CAJA = @VSCO_CAJA        
		  AND AA_CAJA = @VSAA_CAJA        
		  AND MM_CAJA = @VSMM_CAJA        

		EXEC SP_TCMOVI_CAJA_I12 @CSCO_EMPR, @CSCO_USUA_MODI, @VSCO_CAJA, @VSAA_CAJA, @VSMM_CAJA, @VSTI_MOVI,         
		@VDFE_REGI_COMP, @CSCO_TIPO_OPER, NULL, @VNFA_TIPO_CAMB, @CNIM_TOTA, 'C', @CSCO_PROV,         
		@VSDE_ENTI, @CSDE_OBSE, @VSTI_CORR_INEG, @VNUL_CORR_EGRE, @VNUL_CORR_INEG, NULL,         
		@CSCO_UNID_CONC, NULL, NULL, 'N', NULL, NULL, @VSNU_COMP_CAJA OUTPUT        
		    
		----------- INSERTO EL DETALLE DEL MOVIMIENTO ------------------

		EXEC SP_TDMOVI_CAJA_I01 @CSCO_EMPR, @CSCO_USUA_MODI, @VSCO_CAJA, @VSAA_CAJA, @VSMM_CAJA, @VSTI_MOVI, @VSNU_COMP_CAJA,         
		NULL, 'P', @CSCO_PROV, @CSTI_DOCU, @CSNU_DOCU, @CSCO_MONE, @CDFE_EMIS, @CNIM_TOTA,        
		@CNIM_TOTA, @CNIM_TOTA, @CSDE_OBSE, 'S', @INIM_DETA_NEGA, @OSTI_DOCU_LETR, @VNFA_TIPO_CAMB, @CSCO_MONE, @CNIM_TOTA,        
		NULL, NULL, NULL, NULL, @CDFE_VENC, @CDFE_VENC, 1, @CNFA_CAMB_EXTR        


      Fetch CT_TDDISP_CCOS_I01 Into
		@CSCO_EMPR, @CSCO_PROV, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, @CSTI_DOCU, @CSNU_DOCU, @CSCO_MONE, 
		@CNIM_TOTA, @CSCO_TIPO_OPER, @CSDE_OBSE, @CSCO_USUA_MODI, @CSCO_UNID_CONC, @CDFE_EMIS, @CDFE_VENC, @CNFA_CAMB_EXTR

  End
  Close CT_TDDISP_CCOS_I01
  Deallocate CT_TDDISP_CCOS_I01
End
/*-------------------------------------- Fin de Trigger --------------------------------------*/

GO
ALTER TABLE [dbo].[TDDISP_CCOS] ADD CONSTRAINT [PK__TDDISP_C__CBFE097554AC64D5] PRIMARY KEY CLUSTERED  ([CO_EMPR], [CO_PROV], [CO_TIPO_DOCU], [NU_DOCU_PROV], [NU_CORR]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TDDISP_CCOS] ADD CONSTRAINT [FK__TDDISP_CCOS__4A19C7C9] FOREIGN KEY ([CO_EMPR], [CO_PROV], [CO_TIPO_DOCU], [NU_DOCU_PROV]) REFERENCES [dbo].[TMDOCU_PROV] ([CO_EMPR], [CO_PROV], [CO_TIPO_DOCU], [NU_DOCU_PROV])
GO
